package com.sojson.result.interfaces;

import java.io.IOException;

import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

import com.sojson.config.exception.TransErrorCode;
import com.sojson.constant.Constant;
import com.sojson.util.text.Convert;

/**
 * 过滤器返回数据信息工具类接口
 * 
 * @author liu
 * @date 2020-11-02
 */
public interface FilterResponseDataInterface {

    /** 输出数据 */
    int OUT = 1;
    /** 页面跳转 */
    int REDIRECT = 2;
    /** 页面跳转并保存之前访问的路径 */
    int SAVE_URL_AND_REDIRECT = 3;
    /** 输出数据加页面跳转 */
    int OUT_OR_REDIRECT = 4;
    /** 输出数据加页面跳转并保存之前访问的路径 */
    int OUT_OR_SAVE_URL_AND_REDIRECT = 5;

    /**
     * #过滤器拦截后做的操作(1.输出数据,2.页面跳转,3.页面跳转并保存之前访问的路径,4.输出数据加页面跳转,5.输出数据加页面跳转并保存之前访问的路径),不设置为输出数据
     */
    int FILTER_RESPONSE_DATA_TYPE = Convert.toInt(
        Constant.PROPERTIES.getProperty("so.application.filter.responseData.type"), FilterResponseDataInterface.OUT);

    /**
     * 过滤器返回数据还是跳转(在配置文件中配置)
     * 
     * @param request
     * @param response
     * @param code
     * @param url
     * @throws IOException
     */
    void responseDate(ServletRequest request, ServletResponse response, TransErrorCode code, String url)
        throws IOException;

}